home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / extras / programm / gemfsc20 / gemfsc20.lzh / INCLUDE / GEMFAST.H < prev    next >
C/C++ Source or Header  |  1993-03-28  |  30KB  |  627 lines

  1. /*****************************************************************************
  2.  * GEMFAST.H - Header for the high-level functions in the GemFast library.
  3.  *
  4.  * Maintenance:
  5.  *  02/01/93   v1.9
  6.  *             > Created by splitting old gemfast.h into this plus gemfbind.h.
  7.  *             > Changed to __PROTO() style prototypes.
  8.  *             > Added conditional block for GNU compiler.
  9.  *  02/29/92 - v1.8
  10.  *             > Added new options for new utility functions.
  11.  *             > Added extern declarations for all global vars.
  12.  *             > Added macro to map frm_dsdial() to frm_dsdialog() with
  13.  *               parms in the new order.
  14.  *             > Added macros mapping appl_init/exit to apl_xinit/xexit,
  15.  *               so that all aps automatically get new extended init that
  16.  *               fills in the new global vars.  New utils REQUIRE that
  17.  *               these vars be init'd; think twice before changing this!
  18.  *             > Changed FDADDR datatype from char* to void*.
  19.  *  05/26/90 - v1.4
  20.  *             > Added RSHDR structure for imbedded resource support.
  21.  *             > Fixed all structures which defined pointers as 'long'...
  22.  *               - ICONBLK ib_pmask, ib_pdata, ib_ptext
  23.  *               - BITBLK  bi_pdata
  24.  *               - USERBLK ub_code
  25.  *               - PARMBLK pb_tree
  26.  *               All of these structure elements now define the proper ptr.
  27.  *             > Added AESUTIL_A, AESFAST_A and VDIFAST_A symbols.  This
  28.  *               allows specific indication of the presence or abscence of
  29.  *               the bindings libraries, allowing a programmer to use the
  30.  *               GEMFBIND.H header without using the rest of GemFast.  This
  31.  *               also allows conditional compilation code to be more
  32.  *               specific:  it can now test for the presence of the header
  33.  *               file (and handle the differences in the structure defs),
  34.  *               and it can separately test for the presence of the libs,
  35.  *               and the extended functions available therein.
  36.  *  12/03/89 - v1.3
  37.  *             > Renamed a lot of functions, a name compatibility block was
  38.  *               added at the end of this file to smooth the transition.
  39.  *             > Added NO_OBJECT, MU_MENTRY, MU_MEXIT to defines.
  40.  *             > Added XMULTI struct, even though it really belongs to v2.0
  41.  ****************************************************************************/
  42.  
  43. #ifndef GEMFAST_H
  44. #define GEMFAST_H
  45.  
  46. #include <stdarg.h>     /* need this for va_list type */
  47.  
  48. /*****************************************************************************
  49.  * first include the right set of binding headers, and set up some macros
  50.  * to provide independance from the variations between different bindings.
  51.  ****************************************************************************/
  52.  
  53. #ifdef __cplusplus
  54.   extern "C" {
  55. #endif
  56.  
  57. /*----------------------------------------------------------------------------
  58.  * Lattice C v5.x
  59.  *--------------------------------------------------------------------------*/
  60.  
  61. #if defined(LATTICE)
  62.  
  63.   #define GEMFAST_PROTOS
  64.  
  65.   #include <aes.h>
  66.   #include <vdi.h>
  67.  
  68.   #define _Ob_spec      ob_spec
  69.   #define _Ob_spec_t    void*
  70.  
  71.   #define GSTACKARGS    __stdargs
  72.   #define GREGARGS      __regargs
  73.   #define GFAR          far
  74.   #define GNEAR         near
  75.   #ifdef _BASEREL
  76.     #define GLOADDS     __saveds
  77.   #else
  78.     #define GLOADDS
  79.   #endif
  80.  
  81.   /* remap our standard global var names to LC's names */
  82.  
  83.   #define gl_apversion  ( (short)_AESglobal[0] )
  84.   #define gl_apcount    ( (short)_AESglobal[1] )
  85.   #define gl_apid       ( (short)_AESglobal[2] )
  86.   #define gl_apprivate  ( *(long *)(&_AESglobal[3]) )
  87.   #define gl_apptree    ( *(void **)(&_AESglobal[5]) )
  88.   #define gl_ap1resv    ( *(long *)(&_AESglobal[7]) )
  89.   #define gl_aprshdr    ( *(void **)(&_AESglobal[9]) )
  90.  
  91.   /* set up some names defined in gemfbind.h but not LC's aes.h */
  92.  
  93.   #define IS_HOLLOW     0
  94.   #define IS_SOLID      1
  95.   #define IS_PATTERN    2
  96.   #define IS_HATCH      3
  97.   #define IS_UDPTRN     4
  98.  
  99.   #define IP_HOLLOW     0
  100.   #define IP_SOLID      7
  101.  
  102.   #define TE_SYSTEM     3
  103.   #define TE_SMALL      5
  104.  
  105. /*----------------------------------------------------------------------------
  106.  * GNU C 2.x
  107.  *--------------------------------------------------------------------------*/
  108.  
  109. #elif defined(__GNUC__)
  110.  
  111.   #define GEMFAST_PROTOS
  112.  
  113.   #define evnt_timer    _EvntFixGNUTimer
  114.  
  115.   #include <gemfbind.h>
  116.  
  117.   #define _Ob_spec      ob_spec
  118.   #define _Ob_spec_t    long
  119.  
  120.   #define GSTACKARGS
  121.   #define GREGARGS
  122.   #define GFAR
  123.   #define GNEAR
  124.   #define GLOADDS
  125.  
  126. /*----------------------------------------------------------------------------
  127.  * Turbo C (I'm not sure about all these being right; they would be on msdos)
  128.  *--------------------------------------------------------------------------*/
  129.  
  130. #elif defined(__TURBOC__)
  131.  
  132.   #define GEMFAST_PROTOS
  133.  
  134.   #include <gem.h>
  135.  
  136.   #define _Ob_spec      ob_spec.string
  137.   #define _Ob_spec_t    char*
  138.  
  139.   #define GSTACKARGS    cdecl
  140.   #define GREGARGS
  141.   #define GFAR          __far
  142.   #define GNEAR         __near
  143.   #define GLOADDS       __loadds
  144.  
  145. /*----------------------------------------------------------------------------
  146.  * Sozobon, HSC v1.x and 2.x
  147.  *--------------------------------------------------------------------------*/
  148.  
  149. #elif defined(SOZOBON) || defined(__HSC__)
  150.  
  151.   #undef GEMFAST_PROTOS         /* non-ansi compilers here! */
  152.  
  153.   #include <gemfbind.h>
  154.  
  155.   #define _Ob_spec   ob_spec
  156.   #define _Ob_spec_t long
  157.  
  158.   #define GSTACKARGS
  159.   #define GREGARGS
  160.   #define GFAR
  161.   #define GNEAR
  162.   #define GLOADDS
  163.  
  164. /*----------------------------------------------------------------------------
  165.  * catch-all for unknown compilers
  166.  *--------------------------------------------------------------------------*/
  167.  
  168. #else
  169.  
  170.   #error Unknown compiler in GEMFAST.H!
  171.  
  172. #endif
  173.  
  174. /*****************************************************************************
  175.  * macros used in declarations and prototypes.
  176.  *  GCALLBACK is a set of function modifiers used when the AES or GemFast
  177.  *  internals call back into client code.  For some compilers' memory
  178.  *  models, it's necessary to specify stacked args & auto-load data base reg.
  179.  ****************************************************************************/
  180.  
  181. #define GCALLBACK       GFAR GSTACKARGS GLOADDS
  182.  
  183. #ifndef __PROTO
  184.   #ifdef GEMFAST_PROTOS
  185.     #define __PROTO(a) a
  186.   #else
  187.     #define __PROTO(a) ()
  188.   #endif
  189. #endif
  190.  
  191. /*****************************************************************************
  192.  * Tell the world we're here.
  193.  ****************************************************************************/
  194.  
  195. #define GEMF_VERSION    0x0190  /* Tell the world we are v1.90             */
  196.  
  197. /*****************************************************************************
  198.  * some handy function-like macros for GRECT and VRECT parm passing.
  199.  ****************************************************************************/
  200.  
  201. #define RECTVALS(r)  (r)->g_x,    (r)->g_y,    (r)->g_w,    (r)->g_h
  202. #define RECTPTRS(r)  &((r)->g_x), &((r)->g_y), &((r)->g_w), &((r)->g_h)
  203. #define RECTARRAY(r) ((short *)(r))
  204.  
  205. /*****************************************************************************
  206.  * GemFast-defined constants...
  207.  ****************************************************************************/
  208.  
  209. /*----------------------------------------------------------------------------
  210.  * miscellanious stuff...
  211.  *--------------------------------------------------------------------------*/
  212.  
  213. #define NO_OBJECT        (-1)   /* object (in tree) not found               */
  214.  
  215. #define GRF_MSALTARROW    200   /* alternate value of ARROW for grf_mouse() */
  216. #define GRF_MSINQUIRE    (-1)   /* inquire current shape for grf_mouse()    */
  217. #define OBJ_BMINQUIRE    (-1)   /* get w/o change from obj_bmbuttons()      */
  218. #define FRM_GETDEFAULTS (-1L)   /* get w/o change from frm_defaults()       */
  219. #define FRM_MOVER      0x4000   /* special ob_flags value for moveable forms*/
  220.  
  221. #define G_THERMO          200   /* ob_type for a thermometer display object */
  222. #define G_TSCROLL         201   /* ob_type for a text scroll object         */
  223. #define G_RSTRING         202   /* ob_type for a replace-string object      */
  224. #define G_NSLIDE          203   /* ob_type for a numeric-slider object      */
  225.  
  226. #define OBJ_NODRAW          0   /* obj_XXchange(): no draw after change     */
  227. #define OBJ_WITHDRAW        1   /* obj_XXchange(): draw after change        */
  228. #define OBJ_CLIPDRAW        2   /* obj_XXchange(): draw with optional clip  */
  229.  
  230. #define OBJ_TINQUIRE  (-32000)  /* inquire current G_THERMO position        */
  231. #define OBJ_TINCREMENT    (-1)  /* increment current G_THERMO position by 1 */
  232.  
  233. #define FRM_DSMAXBUTTONS    5   /* max dynamic button strings               */
  234. #define FRM_DSMAXSTRINGS   20   /* max dynamic dialog display strings       */
  235.  
  236. #define EVN_BUTTONUP        0   /* evn_wbutton(): wait for button-up        */
  237. #define EVN_BUTTONDOWN      1   /* evn_wbutton(): wait for button-down      */
  238.  
  239. /*----------------------------------------------------------------------------
  240.  * options for apl_whatever() functions...
  241.  *--------------------------------------------------------------------------*/
  242.  
  243. #define APL_RTRANSIENT      0x0001  /* cleanup transient resources */
  244. #define APL_RPERMANENT      0x0002  /* cleanup permenant resources */
  245.  
  246. /*----------------------------------------------------------------------------
  247.  * actions for frm_desktop()...
  248.  *--------------------------------------------------------------------------*/
  249.  
  250. #define FRM_DTINSTALL   0x00000000L  /* install form as system desktop      */
  251. #define FRM_DTREMOVE    0x10000000L  /* remove form, revert to sys desktop  */
  252.  
  253. /*----------------------------------------------------------------------------
  254.  * actions for frm_dialog()...
  255.  *--------------------------------------------------------------------------*/
  256.  
  257. #define FRM_DSTART      0x10000000L  /* do FMD_START                        */
  258. #define FRM_DDRAW       0x20000000L  /* do objc_draw()                      */
  259. #define FRM_DDO         0x40000000L  /* do form_do()                        */
  260. #define FRM_DFINISH     0x80000000L  /* do FMD_FINISH                       */
  261. #define FRM_DCOMPLETE   0xF0000000L  /* do all the steps above in one call  */
  262.  
  263. /*----------------------------------------------------------------------------
  264.  * actions for frm_progress()...
  265.  *--------------------------------------------------------------------------*/
  266.  
  267. #define FRM_PSTART      0x10000000L  /* set up and display progress dialog  */
  268. #define FRM_PUPDATE     0x40000000L  /* update progress thermometer         */
  269. #define FRM_PFINISH     0x80000000L  /* close and cleanup progress dialog   */
  270.  
  271. /*----------------------------------------------------------------------------
  272.  * options for all frm_whatever() functions...
  273.  *   0xauddbbbb
  274.  *     ||| |______ Basic options for all dialog handling.
  275.  *     |||________ Dynamic dialog options.
  276.  *     ||_________ User options; never touched by GemFast.
  277.  *     |__________ Actions.
  278.  *--------------------------------------------------------------------------*/
  279.  
  280. #define FRM_NORMAL          0x00000000L /* placeholder when you want none   */
  281. #define FRM_EXPLODE         0x00000001L /* exploding box graphics in dialog */
  282. #define FRM_CENTER          0x00000002L /* center dialog in screen          */
  283. #define FRM_NEARMOUSE       0x00000004L /* center dialog over mouse         */
  284. #define FRM_MOUSEARROW      0x00000008L /* force mouse ARROW during dialog  */
  285. #define FRM_USEBLIT         0x00000010L /* use blits instead of redraw msgs */
  286. #define FRM_MOVEABLE        0x00000020L /* dialog is moveable               */
  287. #define FRM_NODEFAULTS      0x00008000L /* these options override defaults  */
  288.  
  289. #define FRM_DMUSTSELECT     0x00010000L /* dsdialog/dsmenu: no default exit */
  290. #define FRM_DSHADOWED       0x00020000L /* dsdialog/dsmenu: shadowed parent */
  291. #define FRM_DEFAULTLEFT     0x00040000L /* dsdialog/dsmenu: dflt btn on left*/
  292.  
  293. #define FRM_DSL1TITLE       0x00100000L /* 1st line is title, higher y pos  */
  294.  
  295. #define FRM_MEXITPARENT     0x00100000L /* exit if mouse leaves parent      */
  296. #define FRM_MEXITVICINITY   0x00200000L /* exit if mouse leaves vicinity    */
  297.  
  298. #define FRM_OPTIONBITS      0x0FFFFFFFL /* mask for dialog options          */
  299. #define FRM_BOPTIONBITS     0x0000FFFFL /* mask for basic options           */
  300. #define FRM_DOPTIONBITS     0x00FF0000L /* mask for dynamic options         */
  301. #define FRM_UOPTIONBITS     0x0F000000L /* mask for user options            */
  302. #define FRM_ACTIONBITS      0xF0000000L /* mask for dialog actions          */
  303.  
  304. /*----------------------------------------------------------------------------
  305.  * option for fsl_dialog()...
  306.  *--------------------------------------------------------------------------*/
  307.  
  308. #define FSL_NORMAL          0x0000
  309. #define FSL_FNOPTIONAL      0x0001
  310. #define FSL_PATHONLY        0x0002
  311.  
  312. /*----------------------------------------------------------------------------
  313.  * options for grf_blit() and grf_memblit()...
  314.  *--------------------------------------------------------------------------*/
  315.  
  316. #define GRF_NORMAL         0x0000  /* a placeholder value                */
  317. #define GRF_BFROMSCREEN    0x1000  /* blit from screen to buffer         */
  318. #define GRF_BTOSCREEN      0x2000  /* blit from buffer to screen         */
  319. #define GRF_BMEMCALC       0x4000  /* calc mem requirements, don't blit  */
  320. #define GRF_BOBJTREE       0x0001  /* rectparm OBJECT* instead of GRECT* */
  321.  
  322. /*****************************************************************************
  323.  * GemFast-defined data structures...
  324.  ****************************************************************************/
  325.  
  326. /*----------------------------------------------------------------------------
  327.  * VRECT structure...
  328.  *--------------------------------------------------------------------------*/
  329.  
  330. typedef struct vrect {
  331.     short v_x1, v_y1, v_x2, v_y2;
  332. } VRECT;
  333.  
  334. /*----------------------------------------------------------------------------
  335.  * XMOUSE structure...
  336.  *--------------------------------------------------------------------------*/
  337.  
  338. typedef struct xmouse {
  339.     short retval;
  340.     short bclicks;
  341.     short mask;
  342.     short state;
  343.     short status;
  344.     short mousex;
  345.     short mousey;
  346.     short mouseb;
  347.     short keystate;
  348. } XMOUSE;
  349.  
  350. /*----------------------------------------------------------------------------
  351.  * XMULTI structure...
  352.  *--------------------------------------------------------------------------*/
  353.  
  354. typedef struct xmulti {
  355.     short   msgbuf[8];
  356.     short   mflags;
  357.     short   mbclicks;
  358.     short   mbmask;
  359.     short   mbstate;
  360.     short   mm1flags;
  361.     GRECT   mm1rect;
  362.     short   mm2flags;
  363.     GRECT   mm2rect;
  364.     long    mtcount;
  365.     short   mwhich;
  366.     short   mmox;
  367.     short   mmoy;
  368.     short   mmobutton;
  369.     short   mmokstate;
  370.     short   mkreturn;
  371.     short   mbreturn;
  372. } XMULTI;
  373.  
  374. /*----------------------------------------------------------------------------
  375.  * GUDSLIDE_FUNC, the type of a callback function for grf_udslidebox.
  376.  *--------------------------------------------------------------------------*/
  377.  
  378. typedef void GCALLBACK (GUDSLIDE_FUNC) __PROTO((OBJECT *ptree, short obj, short slidepos, void *udata));
  379.  
  380. /*----------------------------------------------------------------------------
  381.  * XUSERBLK and related items...
  382.  *--------------------------------------------------------------------------*/
  383.  
  384. #ifdef __GNUC__
  385.   struct xparm_blk;           /* tentative decl of these forward-referenced  */
  386.   struct xuser_blk;           /* structures keeps facist GCC compiler happy. */
  387. #endif
  388.  
  389. typedef enum xuser_touch_status {   /* status returned by xuser_blk.ub_touch() */
  390.     XUBT_NONE   = 0x0000,   /* nothing happened as result of touch             */
  391.     XUBT_VISUAL = 0x0001,   /* touch caused minor visual change in object      */
  392.     XUBT_VALUE  = 0x0002,   /* touch caused important change in obj's value(s) */
  393.     XUBT_DCEXIT = 0x0004    /* touch was d-click, treat as default exit object */
  394. } XUBT_STATUS;
  395.  
  396. typedef long        GCALLBACK (XUB_DRAWFUNC)  __PROTO((struct xparm_blk *pblk));
  397. typedef XUBT_STATUS GCALLBACK (XUB_TOUCHFUNC) __PROTO((struct xuser_blk *xub, short mx, short my, short clicks));
  398.  
  399. typedef struct xuser_blk {
  400.     XUB_DRAWFUNC     *ub_draw;     /* the 1st two fields are USERBLK std, */
  401.     struct xuser_blk *ub_self;     /* but ub_parm always points to self.  */
  402.     XUB_TOUCHFUNC    *ub_touch;    /* call this func when object touched. */
  403.     long              ub_size;     /* size of this XUSERBLK structure.    */
  404.     _Ob_spec_t        ob_spec;     /* ob_spec and ob_type are from the    */
  405.     short             ob_type;     /* original object before we xformed   */
  406.     OBJECT           *parent_tree; /* it.  parent_tree and parent_obj are */
  407.     short             parent_obj;  /* a backlink to the original object.  */
  408.     long              reserved[4]; /* room to grow.                       */
  409. } XUSERBLK;
  410.  
  411. /*----------------------------------------------------------------------------
  412.  * XPARMBLK structure (our remapping of a standard PARMBLK)...
  413.  *--------------------------------------------------------------------------*/
  414.  
  415. typedef struct xparm_blk {
  416.     OBJECT   *ptree;
  417.     short    obj;
  418.     short    prevstate;
  419.     short    currstate;
  420.     GRECT    drawrect;
  421.     GRECT    cliprect;
  422.     XUSERBLK *pub;
  423. } XPARMBLK;
  424.  
  425. /*****************************************************************************
  426.  * declarations of all global vars defined by gemfast...
  427.  ****************************************************************************/
  428.  
  429. /*
  430.  * these are valid after apl_xinit()
  431.  */
  432.  
  433. extern unsigned short    gl_grfhandle;  /* physical VDI handle (graf_handle)*/
  434. extern unsigned short    gl_wchar;      /* width of a character             */
  435. extern unsigned short    gl_w2char;     /* width of a character  / 2        */
  436. extern unsigned short    gl_w4char;     /* width of a character  / 4        */
  437. extern unsigned short    gl_w8char;     /* width of a character  / 8        */
  438. extern unsigned short    gl_hchar;      /* height of a character            */
  439. extern unsigned short    gl_h2char;     /* height of a character / 2        */
  440. extern unsigned short    gl_h4char;     /* height of a character / 4        */
  441. extern unsigned short    gl_h8char;     /* height of a character / 8        */
  442. extern unsigned short    gl_wbox;       /* width of a boxchar               */
  443. extern unsigned short    gl_w2box;      /* width of a boxchar    / 2        */
  444. extern unsigned short    gl_w4box;      /* width of a boxchar    / 4        */
  445. extern unsigned short    gl_w8box;      /* width of a boxchar    / 8        */
  446. extern unsigned short    gl_hbox;       /* height of a boxchar              */
  447. extern unsigned short    gl_h2box;      /* height of a boxchar   / 2        */
  448. extern unsigned short    gl_h4box;      /* height of a boxchar   / 4        */
  449. extern unsigned short    gl_h8box;      /* height of a boxchar   / 8        */
  450.  
  451. extern GRECT    gl_rwdesk;      /* coordinates of work area of the desktop  */
  452. extern GRECT    gl_rfscrn;      /* coordinates of the full screen           */
  453.  
  454. /*
  455.  * these are valid after apl_vopen()
  456.  */
  457.  
  458. extern short  gl_vwout[57];    /* work_out from v_opnvwk()                  */
  459. extern short  gl_vxout[57];    /* work_out from vq_extnd(,1,)               */
  460.  
  461. /*****************************************************************************
  462.  * name extension macros...
  463.  *   Old Sozobon/HSC only allows 7 chars in external names, these macros map
  464.  *   descriptive names into a 7-char namespace for us.
  465.  ****************************************************************************/
  466.  
  467. #if defined(__SOZOBONC__) && !defined(__HSC_LONGNAMES__)
  468.   #define wc_scroll_calc      wcScrCal
  469.   #define obj_make_tscroll    objMTScroll
  470.   #define obj_get_tscroll     objGTScroll
  471.   #define obj_set_tscroll     objSTScroll
  472.   #define obj_mkthermo        objMkThermo
  473. #endif
  474.  
  475. /*****************************************************************************
  476.  * prototypes...
  477.  ****************************************************************************/
  478.  
  479. extern void   apl_cleanup __PROTO((short cleanup_type));
  480. extern void   apl_mmvectors __PROTO((void *allocfunc, void *freefunc));
  481. extern void   apl_vclose __PROTO((short vhandle));
  482. extern short  apl_vopen __PROTO((void));
  483. extern short  apl_vshared __PROTO((void));
  484. extern void   apl_xexit __PROTO((void));
  485. extern short  apl_xinit __PROTO((void));
  486. extern void   evn_wbutton __PROTO((short up_or_down));
  487. extern void   frm_confine __PROTO((OBJECT *tree, GRECT *boundrect));
  488. extern long   frm_defaults __PROTO((long options));
  489. extern void   frm_desktop __PROTO((long options, OBJECT *tree));
  490. extern short  frm_dialog __PROTO((long options, OBJECT *tree, short editobj));
  491. extern short  frm_dsdialog __PROTO((long options, char **btnarray, char **strarray));
  492. extern short  frm_dsmenu __PROTO((long options, char *title, char **itemarray));
  493. extern short  frm_eflag __PROTO((OBJECT *tree, short object, char *fmt, ...));
  494. extern void   frm_enableblit __PROTO((void));
  495. extern short  frm_error __PROTO((short errcode, char *buttons, char *fmt, ...));
  496. extern short  frm_menu __PROTO((long options, OBJECT *tree, short select_state));
  497. extern short  frm_mkmoveable __PROTO((OBJECT *tree, short mover_object));
  498. extern short  frm_nldialog __PROTO((long options, char *buttons, char *lines));
  499. extern short  frm_nlmenu __PROTO((long options, char *title, char *items));
  500. extern short  frm_printf __PROTO((long options, char *buttons, char *fmt, ...));
  501. extern short  frm_progress __PROTO((long options, short increments, char *abortbutton, char *fmt, ...));
  502. extern short  frm_qchoice __PROTO((char *buttons, char *fmt, ...));
  503. extern short  frm_qerror __PROTO((short error, char *fmt, ...));
  504. extern short  frm_qfatal __PROTO((short error, char *fmt, ...));
  505. extern short  frm_qmenu __PROTO((char *title, char *selections));
  506. extern void   frm_qtext __PROTO((char *fmt, ...));
  507. extern short  frm_question __PROTO((char *fmt, ...));
  508. extern void   frm_sizes __PROTO((OBJECT *tree, GRECT *outrect));
  509. extern short  frm_verror __PROTO((short errcode, char *buttons, char *fmt, va_list args));
  510. extern short  frm_vprintf __PROTO((long options, char *buttons, char *fmt, va_list args));
  511. extern short  frm_vprogress __PROTO((long options, short increments, char *abortbutton, char *fmt, va_list args));
  512. extern short  fsl_dialog __PROTO((short options, char *opath, char *ipath, char *forcewild, char *prompt));
  513. extern long   grf_blit __PROTO((short options, void *buffer, void *rect_or_tree));
  514. extern void  *grf_memblit __PROTO((short options, void *buffer, void *rect_or_tree));
  515. extern short  grf_mouse __PROTO((short newshape, void *usershape));
  516. extern short  grf_udslidebox __PROTO((OBJECT *ptree, short obj, short v_or_h, GUDSLIDE_FUNC *ufunc, void *udata));
  517. extern short  mnu_bar __PROTO((OBJECT *tree, short install_or_remove, long reserved));
  518. extern void   mnu_disable __PROTO((void));
  519. extern void   mnu_enable __PROTO((void));
  520. extern void   mnu_erase __PROTO((void));
  521. extern void   mnu_tbar __PROTO((char *title_string));
  522. extern short  obj_bmbuttons __PROTO((OBJECT *tree, short parent, short select_state, short bitmap));
  523. extern short  obj_clcalc __PROTO((OBJECT *tree, short object, GRECT *grectout, VRECT *vrectout));
  524. extern short  obj_dxfind __PROTO((OBJECT *tree));
  525. extern void   obj_flchange __PROTO((OBJECT *tree, short object, short newstate, short redraw, ...));
  526. extern char * obj_gstring __PROTO((OBJECT *tree, short object));
  527. extern long   obj_gvalue __PROTO((OBJECT *tree, short object));
  528. extern short  obj_make_tscroll __PROTO((OBJECT *tree, short object, short statusobj));
  529. extern void   obj_set_tscroll __PROTO((OBJECT *tree, short object, void *datalist, short numitems, short curitem, short topitem));
  530. extern short  obj_get_tscroll __PROTO((OBJECT *tree, short object, char **curstring, short *curitem, short *topitem));
  531. extern short  obj_mkthermo __PROTO((OBJECT *tree, short object, short increments));
  532. extern void   obj_mxuserdef __PROTO((OBJECT *tree, short object, XUSERBLK *xub, XUB_DRAWFUNC *pdraw, XUB_TOUCHFUNC *ptouch, long xub_size));
  533. extern void   obj_offxywh __PROTO((OBJECT *tree, short object, GRECT *outrect));
  534. extern short  obj_parent __PROTO((OBJECT *tree, short object));
  535. extern char **obj_ppstring __PROTO((OBJECT *tree));
  536. extern short  obj_rbfind __PROTO((OBJECT *tree, short parent, short select_state));
  537. extern short  obj_rbselect __PROTO((OBJECT *tree, short object, short select_state));
  538. extern void   obj_stchange __PROTO((OBJECT *tree, short object, short new_state, short redraw, ...));
  539. extern void   obj_sstring __PROTO((OBJECT *tree, short object, char *newstring));
  540. extern void   obj_svalue __PROTO((OBJECT *tree, short object, long newvalue));
  541. extern short  obj_udthermo __PROTO((OBJECT *tree, short object, short newpos, GRECT *cliprect));
  542. extern short  obj_xtfind __PROTO((OBJECT *tree, short parent, char xtype));
  543. extern void   obj_xywh __PROTO((OBJECT *tree, short object, GRECT *outrect));
  544. extern void   rc_confine __PROTO((GRECT *boundrect, GRECT *therect));
  545. extern GRECT *rc_gadjust __PROTO((GRECT *dest, short hadjust, short vadjust));
  546. extern VRECT *rc_gtov __PROTO((GRECT *source, VRECT *dest));
  547. extern short  rc_ptinrect __PROTO((GRECT *therect, short x, short y));
  548. extern GRECT *rc_scale __PROTO((GRECT *source, GRECT *dest, short percentage));
  549. extern VRECT *rc_vadjust __PROTO((VRECT *dest, short hadjust, short vadjust));
  550. extern GRECT *rc_vtog __PROTO((VRECT *source, GRECT *dest));
  551. extern short  rsc_cubuttons __PROTO((OBJECT *tree));
  552. extern void   rsc_gstrings __PROTO((OBJECT *tree, short object, char **ppstring, ...));
  553. extern void   rsc_gtrees __PROTO((short object, OBJECT **pptree, ...));
  554. extern short  rsc_rrbuttons __PROTO((OBJECT *tree));
  555. extern void   rsc_sstrings __PROTO((OBJECT *tree, short object, char *string, ...));
  556. extern void   rsc_sxtypes __PROTO((OBJECT *tree, short object, short xtype, ...));
  557. extern void   rsc_treefix __PROTO((OBJECT *tree));
  558. extern short  wnd_top __PROTO((void));
  559. extern short  wnd_update __PROTO((short semaphore));
  560.  
  561. extern short  evnx_multi __PROTO((XMULTI *xm));
  562. extern short  evnx_timer __PROTO((unsigned long milliseconds));
  563. extern short  frmx_center __PROTO((OBJECT *tree, GRECT *outrect));
  564. extern short  frmx_dial __PROTO((short flag, GRECT *little, GRECT *big));
  565. extern short  grfx_dragbox __PROTO((GRECT *start, GRECT *boundary, GRECT *end));
  566. extern short  winx_calc __PROTO((short type, short kind, GRECT inrect, GRECT *outrect));
  567. extern short  winx_get __PROTO((short whandle, short field, GRECT *outrect));
  568. extern void   wc_scroll_calc __PROTO((short curline, short datalines, short windowlines, short *slsize, short *slpos));
  569.  
  570. /*****************************************************************************
  571.  * automatically use extended binding routines....
  572.  *   if you undo these macros, all the builtin utilities will break!
  573.  *   the normal low-level bindings will still work, though.
  574.  ****************************************************************************/
  575.  
  576. #if defined(LATTICE)
  577.   #undef appl_init
  578.   #undef appl_exit
  579.   #undef wind_update
  580. #endif
  581.  
  582. #define appl_init   apl_xinit   /* extended init fills in new gl_ vars    */
  583. #define appl_exit   apl_xexit   /* extended exit closes shared vdi, etc   */
  584. #define wind_update wnd_update  /* use stack-like wind_update routine     */
  585. #define graf_mouse  grf_mouse   /* use save/restore mouse shape system    */
  586. #define objc_xywh   obj_xywh    /* this one's just plain faster           */
  587.  
  588. #define menu_bar(a,b)   mnu_bar((a),(b),0L) /* popable menu system        */
  589.  
  590. /*****************************************************************************
  591.  * Name compatibility stuff (this stuff can prolly be nuked any time now).
  592.  *
  593.  *  02/29/92 - v1.8
  594.  *              Added mapping of frm_dsdial to frm_dsdialog.
  595.  *  05/26/90 - v1.4
  596.  *              Added mapping of find_exttype to obj_xtfind.
  597.  *  08/28/89 - v1.3
  598.  *              In v1.3, a big push has been made to make a consistant
  599.  *              naming standard for the AES utilities.  To avoid breaking
  600.  *              a lot of existing code, the following block will direct
  601.  *              the old names to the new routines.
  602.  ****************************************************************************/
  603.  
  604. #define objclg_adjust           rc_gadjust
  605. #define objclv_adjust           rc_vadjust
  606. #define objcl_calc              obj_clcalc
  607.  
  608. #define objrb_which(a,b)        obj_rbfind((a),(b),SELECTED)
  609. #define obj_rbwhich(a,b)        obj_rbfind((a),(b),SELECTED)
  610. #define objxrb_which            obj_rbfind
  611.  
  612. #define find_exttype            obj_xtfind
  613.  
  614. #define objst_change            obj_stchange
  615. #define objfl_change            obj_flchange
  616.  
  617. #define frm_dsdial(str,btn, options) frm_dsdialog((options)|FRM_DSL1TITLE,(btn),(str))
  618. #define frm_sizes(tree, rect)        obj_clcalc((tree), ROOT, (rect), NULL)
  619.  
  620. #ifdef __cplusplus
  621.   }
  622. #endif
  623.  
  624. #endif /* GEMFAST_H */
  625.  
  626.  
  627.